// Copyright (C) 2013, Steffen Knollmann
// Released under the terms of the GNU General Public License version 3.
// This file is part of `ginnungagap'.

#ifndef GENERATEICSOUT_H
#define GENERATEICSOUT_H


/*--- Doxygen file description ------------------------------------------*/

/**
 * @file generateICs/generateICsOut.h
 * @ingroup  toolsGICSOut
 * @brief  Provides wrapper for output things.
 */


/*--- Includes ----------------------------------------------------------*/
#include "generateICsConfig.h"
#include "generateICsData.h"
#include "generateICsMode.h"
#include "../../src/libutil/gadget.h"


/*--- ADT handle --------------------------------------------------------*/
typedef struct generateICsOut_struct *generateICsOut_t;


/*--- Structure definition ----------------------------------------------*/
struct generateICsOut_struct {
	// Input
	const int      numFiles;
	gadget_t       gadget;
	gadgetTOC_t    toc;
	// Generated by initBaseHeader();
	gadgetHeader_t baseHeader;
};


/*--- Prototypes of exported functions ----------------------------------*/
extern generateICsOut_t
generateICsOut_new(const char *prefix, int outputFiles, gadgetVersion_t v);

extern void
generateICsOut_del(generateICsOut_t *genicsOut);

extern void
generateICsOut_initBaseHeader(generateICsOut_t        genicsOut,
                              const generateICsData_t data,
                              const uint32_t          np[3],
                              const generateICsMode_t mode);


/*--- Doxygen group definitions -----------------------------------------*/

/**
 * @defgroup toolsGICSOut Output format wrapper
 * @ingroup toolsGICS
 * @brief Simple module to wrap the required data for doing the output.
 */

#endif
